Aspects herein relate to computer software, and more specifically, to computer software to expose weak consistency errors in parallel computing applications.
A common problem in programming parallel computing applications is weak consistency, where portions (such as a thread or process) of the application access stale variable values. In order to make parallel systems run faster, most computer hardware does not replicate every store to memory across all threads in the parallel system in an atomic fashion. Approaches to keep the systems strongly consistent have a negative impact on system performance, which is why weakly consistent architectures have been adopted by most newer systems. Because of this, the programmer must be careful when accessing values that are set in different threads because the correct values may not appear in another thread at the time (or in the order) they were set.
There are many instances in parallel programming where accessing stale data is acceptable, and execution may continue as planned. However, there are times where accessing stale values can cause fatal results. These instances are difficult to detect because a certain timing window must be hit to encounter such errors.